<?php

namespace App\Model\Common;

class AdminMenu extends Menu
{
    protected $cacheKey = 'system_menus';
    protected $originCacheKey = 'system_origin_menus';
    protected $Group = AdminGroup::class;
    // protected $perPage = 1000;
    // const cacheKey = 'system_menus';
    // protected $fillable = ['pid', 'title', 'url', 'icon', 'status', 'isshow', 'rank'];
    // const originCacheKey = 'system_origin_menus';

    // public static function getOriginMenus($opt = []) {
    //     $menus = cache(self::originCacheKey);

    //     if ( empty($menus) )
    //     {
    //         $menus = self::all();
    //         cache([self::originCacheKey => $menus], 5);
    //     }
    //     return $menus;
    // }
    
    // public static function getMenus($opt = [])
    // {
    //     $menus = cache(self::cacheKey);

    //     if (empty($menus) || (!empty($opt['no_cache']) && true === $opt['no_cache'])) {
    //         $menus = self::orderBy('rank', 'desc')->get();
    //         cache([self::originCacheKey => $menus], 5);
    //         $data = [];
    //         foreach ($menus as $k => $v) {
    //             $data[$v['pid']][] = $v;
    //         }
    //         // return $data;
    //         if (!$data[0]) {
    //             return [];
    //         }
    //         $menus = self::menuFormat($data[0], $data);
    //         cache([self::cacheKey => $menus], 5);
    //     }
    //     return $menus;
    // }

    // private static function menuFormat($da, $data)
    // {
    //     foreach ($da as $k => $v) {
    //         if (isset($data[$v['id']])) {
    //             $da[$k]['children'] = array_values(self::menuFormat($data[$v['id']], $data));
    //         }
    //     }

    //     return $da;
    // }

    // public static function getMyMenu($all = true)
    // {
    //     $pids = AdminGroup::getPids();

    //     $menus = self::getMenus();
    //     $menus = self::_filterMenu($menus, $pids, $all);

    //     return array_values($menus);
    // }

    // protected static function _filterMenu($menus, $pids, $all)
    // {
    //     foreach ($menus as $kk => $ms) {
    //         if (!$all && !$ms['isshow']) {
    //             unset($menus[$kk]);
    //             continue;
    //         }
    //         if (!in_array($ms['id'], $pids) && empty($ms['children'])) {
    //             unset($menus[$kk]);
    //             continue;
    //         } elseif (isset($ms['children']) && $ms['children']) {
    //             $menus[$kk]['children'] = self::_filterMenu($ms['children'], $pids, $all);
    //         }
    //         if (isset($menus[$kk]['children'])) {
    //             if (empty($menus[$kk]['children'])) {
    //                 unset($menus[$kk]['children']);
    //                 continue;
    //             } else {
    //                 $menus[$kk]['children'] = array_values($menus[$kk]['children']);
    //             }
    //         }
    //     }

    //     return $menus;
    // }

    // public function edit($request, $opt = [])
    // {
    //     $re = $this->where($this->getKeyName(), $request->input('id'))->update($request->only($this->getFillable()));
    //     $this->getMenus(['no_cache' => true]);

    //     return $re;
    // }

    // public function refreshCache($menu, $mode = 'update')
    // {
    //     $this->getMenus(['no_cache' => true]);
    // }
}
